﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.SPP.EntidadesNegocio;
using MJM.CBD.Conn;
using System.Data;
using System.Data.SqlClient;

namespace MJM.SPP.AccesoDatos
{
    public class PermisoGrupoAD
    {
        public int Ingresar(PermisoGrupoEN obj)
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_OPTASI_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmID,prmIdAsignacion,prmIDModulo;
            int codigo=0;
            try
            {
                prmIdAsignacion = cmd.CreateParameter();
                prmIdAsignacion.ParameterName = "@vUSUASI_P_inID";
                prmIdAsignacion.SqlDbType = SqlDbType.Int;
                prmIdAsignacion.Value = obj.USUASI_P_inID;
                cmd.Parameters.Add(prmIdAsignacion);

                prmIDModulo = cmd.CreateParameter();
                prmIDModulo.ParameterName = "@vOPTGEN_P_inID";
                prmIDModulo.SqlDbType = SqlDbType.Int;
                prmIDModulo.Value = obj.OPTGEN_P_inID;
                cmd.Parameters.Add(prmIDModulo);
                
                prmID = cmd.CreateParameter();
                prmID.Direction = ParameterDirection.ReturnValue;
                prmID.SqlDbType = SqlDbType.Int;
                cmd.Parameters.Add(prmID);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = Convert.ToInt32(prmID.Value);
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return codigo;
        }

        public List<PermisoGrupoEN> Listar(int IDAsignacion)
        { 
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_OPTASI_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmIDAsignacion;
            List<PermisoGrupoEN> lst = new List<PermisoGrupoEN>();
            SqlDataReader dr;
            try
            {
                prmIDAsignacion = cmd.CreateParameter();
                prmIDAsignacion.ParameterName = "@vUSUASI_P_inID";
                prmIDAsignacion.SqlDbType = SqlDbType.Int;
                prmIDAsignacion.Value = IDAsignacion;
                cmd.Parameters.Add(prmIDAsignacion);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                PermisoGrupoEN obj;
                while (dr.Read())
                {
                    obj = new PermisoGrupoEN();
                    obj.OPTASI_P_inID = dr.GetInt32(0);
                    obj.USUASI_P_inID = dr.GetInt32(1);
                    obj.OPTGEN_P_inID = dr.GetInt32(2);
                    obj.OPTASI_inFLAELI = dr.GetInt32(3);
                    lst.Add(obj);
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }

        public int Modificar(int idElemento, int IdNuevoPadre, int tipo)
        { 
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_PERGRU_P_inID_Actualizar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmIdElemento,prmIdNuevoPadre,prmtipo;
            int codigo=0;
            try
            {
                prmIdElemento = cmd.CreateParameter();
                prmIdElemento.ParameterName = "@idElemeno";
                prmIdElemento.SqlDbType = SqlDbType.Int;
                prmIdElemento.Value = idElemento;
                cmd.Parameters.Add(prmIdElemento);

                prmIdNuevoPadre = cmd.CreateParameter();
                prmIdNuevoPadre.ParameterName = "@idNuevoPadre";
                prmIdNuevoPadre.SqlDbType = SqlDbType.Int;
                prmIdNuevoPadre.Value = IdNuevoPadre;
                cmd.Parameters.Add(prmIdNuevoPadre);

                prmtipo = cmd.CreateParameter();
                prmtipo.ParameterName = "@idTipo";
                prmtipo.SqlDbType = SqlDbType.Int;
                prmtipo.Value = tipo;
                cmd.Parameters.Add(prmtipo);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = 1;
            }
            catch(Exception ex)
            {
                codigo = 0;
                cmd.Dispose();
                conn.Dispose();
            }

            return codigo;
        }
    }
}
